{% extends "knn.html" %}

{% block title %}关于线性回归{% endblock %}

{% block description %}
<p><b>线性回归分析（一元）</b>，一种确定两种变量间相互依赖的定量关系的一种统计分析方法，可用于数据预测。</p>
<p><b>工作流程：</b>确定Y与X间的定量关系表达式，这种表达式称为回归方程；对求得的回归方程的可信度进行检验；判断自变量X对因变量Y有无影响；利用所求得的回归方程进行预测和控制。</p>
<p><b>相关系数 r：</b>0~1之间的数字，一般认为r在0.7以上时才存在较明显的相关关系。</p>
<p><b>拟合系数 s：</b>越接近于1，拟合效果越好。</p>
<p><b>待预测值：</b>输入自变量x的值，得到线性回归的预测值y。</p>
<p><b>算法缺点：</b>对非线性的数据拟合不好。</p>
<p><b>适用数据范围：</b>数值型、标称型数据。</p>
{% endblock %}


{% block input %}
<div class="span9">
    <form class="bs-example bs-example-form " method="post" name="knn" role="form" action="" enctype="multipart/form-data">
    {% csrf_token %}
    <!--格式-->
    <label>待预测值:</label>
    <input type="text" class="form-control" placeholder="请输入要预测的值的横坐标" name="x" value="{{ x }}" required="required">
    <input type="file" name="csv" required="required" > 
    <p class="form-btn">
    <button type="submit" class="btn btn-primary btn-lg " name="ok" onclick=draw()>上传文件</button>
    </p>
    </form>
</div>
{% endblock %}


{% block resu %}
{% if result  %}
<hr>
<p><h4>分析结果</h4></p>
<br>

<div id="RA_line1" style="height:500px;width:90%"></div>
    <!-- ECharts单文件引入 -->
    <script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script>
    <script type="text/javascript">
        // 基于准备好的dom，初始化echarts图表
var myChart = echarts.init(document.getElementById('RA_line1')); 
myChart.showLoading({text: "图表数据正在努力加载..."});

var option = {
    title : {
        text: '原始数据散点图',
        subtext: '结果仅供参考'
    },
    tooltip : {
        trigger: 'axis',
        showDelay : 0,
        axisPointer:{
            show: true,
            type : 'cross',
            lineStyle: {
                type : 'dashed',
                width : 1
            }
        }
    },
    legend: {
        data: ['原始数据']
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataZoom : {show: true},
            dataView : {show: true, readOnly: false},
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    xAxis : [
        {
            name :{{ Xname|safe }},  // 横轴名称
            type : 'value',
            scale:true,
            axisLabel : {
                formatter: '{value}'
            }
        }
    ],
    yAxis : [
        {
            name :{{ Yname|safe }},  //纵轴名称
            type : 'value',
            scale:true,
            axisLabel : {
                formatter: '{value}'
            }
        }
    ],
    series : {{ data|safe }}
};
        // 为echarts对象加载数据 
        myChart.hideLoading(); 
        myChart.setOption(option);
        
    </script>


<div id="RA_line2" style="height:500px;width:90%"></div>
    <!-- ECharts单文件引入 -->
    <script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script>
    <script type="text/javascript">
        // 基于准备好的dom，初始化echarts图表
var myChart = echarts.init(document.getElementById('RA_line2')); 
myChart.showLoading({text: "图表数据正在努力加载..."});
var option = {
    title : {
        text: '回归分析结果图',
        subtext: '仅供参考'
    },
    tooltip : {
        trigger: 'axis'
    },
    legend: {
        data:['回归分析结果']
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            magicType : {show: true, type: ['line', 'bar']},
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    calculable : true,
    xAxis : [
        {
            type : 'category',
            boundaryGap : false,
            data : {{ data_x }}
        }
    ],
    yAxis : [
        {
            type : 'value',
            axisLabel : {
                formatter: '{value}'
            }
        }
    ],
    series : {{ series|safe }}
};
      

        // 为echarts对象加载数据 
        myChart.hideLoading(); 
        myChart.setOption(option);
        
    </script>


<hr>
<div class="content">
{% if b < 0 %}
<p>根据一元线性回归分析，所拟合得到的直线为：y = {{ a|floatformat:"6" }}x - {{ b2|floatformat:"6" }}</p>
{% else %}
<p>根据一元线性回归分析，所拟合得到的直线为：y = {{ a|floatformat:"6" }}x + {{ b|floatformat:"6" }}</p>
{% endif %}
<p>您输入的数据为：{{ x }}，当{{ Xname }}的值为{{ x }}时，预测其对应的{{ Yname }}值为{{ result|floatformat:"6" }}。</p>
<p>相关系数r：{{ r|floatformat:"6" }}</p>
<p>拟合系数s：{{ s|floatformat:"6" }}</p>
<p>（相关系数、拟合系数的含义参见上面“关于线性回归”部分。）</p>
<br><br>
</div>

{% endif %}
{% endblock %}

